草庐IT

Lua 垃圾回收

全部标签

c++ - 在 C++ 游戏引擎中使用 Lua 定义 NPC 行为

我正在使用C++开发一个游戏引擎,使用Lua处理NPC行为。我在设计过程中遇到了一些问题。对于需要多于一个框架来执行的所有事情,我想使用一个进程链表(它们是C++类)。所以这个:goto(point_a)say("Ohdear,thislawnlooksreallyscruffy!")mowLawn()会创建一个GotoProcess对象,它有一个指向SayProcess对象的指针,而SayProcess对象有一个指向MowLawnProcess对象的指针。这些对象将在NPC生成时立即创建,无需进一步编写脚本。这些对象中的第一个将在每一帧更新。完成后,它将被删除,下一个将用于更新。我通

c++ - 序列化 lua_State 以通过网络发送

我需要使用C++中的套接字将lua_state发送到服务器。我如何序列化lua_State以便它可以通过网络发送? 最佳答案 根据您的需要,您有多种选择。您可以尝试使用PlutoLibrary.它是一个“重量级”序列化库:Plutoisalibrarywhichallowsuserstowritearbitrarilylargeportionsofthe"Luauniverse"intoaflatfile,andlaterreadthembackintothesameoradifferentLuauniverse.Objectref

c++ - 从 lua 5.2 调用 c 函数会产生语法错误

我一直在尝试让lua脚本为我正在开发的一个小游戏工作,但lua似乎比它的值(value)更麻烦。经过大量谷歌搜索和头发撕裂,我设法让简单的脚本运行但很快就碰壁了。C函数好像并不想绑定(bind)到lua上,至少绑定(bind)后不想运行。g++顺利编译了c代码,但是lua解释器生成了这个语法错误:LUAERROR:bin/lua/main.lua:1:syntaxerrornear'getVersion'我的C(++)代码:#includestaticconstluaL_Reglualibs[]={{"base",luaopen_base},{"io",luaopen_io},{NUL

C++:如何阻止编译器使用大模板参数发送垃圾邮件错误?

在我的C++代码中,它在很大程度上依赖于模板元编程,我有类似的东西:templatestructMyClassConfig{staticintconstFoo=TFoo;staticintconstBar=TBar;staticintconstBaz=TBaz;staticintconstQux=TQux;usingSpam=TSpam;};templateclassMyClass{...};也就是说,我使用虚拟类来包含各种参数。在这里,通常有很多嵌套,所以MyClassConfig::Spam又可以是这样的配置类。这一切都有效,直到编译器(g++)决定它不喜欢我的代码。此时它会愉快地

c++ - 使用 C API 的有序 lua 表循环

考虑以下lua表:foo={bar1={a=1,b=2,c="hello"},bar2={a=5,b=2,c="bbq"},bar3={a=76,b=13,c="pwnd"}}我正在尝试使用luaCAPI迭代此表以检索键名称bar1、bar2和bar3。我使用lua_next(L,-2)函数按照许多人的建议进行迭代,但问题是它以随机顺序返回元素。每次运行时顺序都会发生变化。我使用以下代码:for(lua_pushnil(L);lua_next(L,-2)!=0;lua_pop(L,1)){printf("%s\n",lua_tostring(L,-2));}大多数时候,输出是无序的,比

垃圾分类|城市垃圾分类管理系统|基于Springboot的城市垃圾分类管理系统设计与实现(源码+数据库+文档)

城市垃圾分类管理系统目录目录基于Springboot的城市垃圾分类管理系统设计与实现 一、前言二、系统功能设计三、系统实现1、垃圾列表2、公告信息管理3、公告类型管理四、数据库设计1、实体ER图五、核心代码 六、论文参考七、最新计算机毕设选题推荐八、源码获取:博主介绍:✌️大厂码农|毕设布道师,阿里云开发社区乘风者计划专家博主,CSDN平台Java领域优质创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。✌️主要项目:小程序、SpringBoot、SSM、Vue、Html、Jsp、Nodejs等设计与开发。🍅文末获取源码联系🍅基于Springboot的城市垃圾分类管理系统设计与实现 一、前

c++ - 函数需要抽象类型 A 的 C++ 对象。如何将 A 子类的 Lua 对象传递给它?

我想将派生自纯虚拟C++类的类的Lua对象传递给需要纯虚拟类的C++对象的函数。我该怎么做?我是lua和luabind的新手,请耐心等待。在C++中:structA{virtualvoidfoo()=0;};voiddo_something(A*a){a->foo();}在Lua中:class'MyA'(A)....functionMyA:foo()print('hi')end再次在C++中:...//somehowcreateaninstanceofMyAclassandnamedmyA//How?//Maybetheresultofacallto"MyA()"?do_somethi

c++ - 如何从 C++ 读取 Lua 表返回值

我有一个返回表(包含字符串集)的Lua函数该函数使用此代码运行良好:lua_pushstring(lua,"funcname");lua_gettable(lua,LUA_GLOBALSINDEX);lua_pushstring(lua,"someparam");lua_pcall(lua,1,1,0);该函数返回一个表。我如何从我的C++代码中读取它的内容? 最佳答案 如果你问如何遍历结果表,你需要lua_next(该链接还包含一个示例)。正如egarcia所说,如果lua_pcall返回0,则可以在堆栈顶部找到函数返回的表。

c++ - 如何替换 Lua 默认错误打印?

我正在将Lua作为脚本语言实现到Windows应用程序中。由于应用程序的结构,打印输出未使用流式io,例如stdout和stderror。我已经设法覆盖Luaprint以适应我的结构...lua_register(L,"print",cs_print);...但是如何在不使用流的情况下覆盖所有错误和调试打印输出?我需要在一个函数中处理它(类似于print)。 最佳答案 Lua写入stderr的唯一地方是在luaL_newstate的panic函数中。安装。如果您将Lua嵌入到您的应用程序中,请确保您从protected调用中启动Lu

c++ - 3rd-party 垃圾收集器中使用的方法

我写信是为了澄清本网站上的一些评论。1)我知道C++没有垃圾收集器。有人说C++是在垃圾收集器思想出现之前发明的,这就是原因。真的吗?我认为这是有道理的。2)每当讨论垃圾收集器时,都会提出智能点(例如boost::share_ptr)作为一种方式。我曾经坚信引用计数是实现垃圾收集器的一种方式,但有人说,智能点不是垃圾收集器的实现。怎么回事?3)有人说为什么C++没有包含垃圾收集器是因为它很难,很多问题无法解决。但是,有人说有3rd-party垃圾收集器可用,无论是商业的还是免费的。那么这些3rd-party是如何处理这些问题的呢?如果有人能澄清我的困惑,我将不胜感激。非常感谢!